/**
 * @author Francesco Rosso, matr 592057
 */

package pcd1112.model;

import pcd1112.model.eccezioni.EnergyException;
import pcd1112.model.messaggi.MessaggioBase;
import pcd1112.model.messaggi.MessaggioUnicast;

/**
 * Interfaccia per implementare nodi
 * 
 */
public interface INodo {
	public Coordinata getPosizione();

	public int getIdNodo();

	public void riceviMessaggio(MessaggioBase m);

	public void inoltraMessaggio(MessaggioUnicast m) throws EnergyException;

	public void aggiungiVicino(INodo n);

	public void startLSM();

	public DescrizioneNodo getStato();

	public void startRED(int rand);

	public boolean equals(INodo n);

	public boolean isClone();

	public void setClone(boolean clone);

	public boolean isCloned();

	public void setCloned(boolean cloned);

	public Thread.State getState();

	public void interrupt();

}
